// 获取mongoose对象
const mongoose = require("mongoose");
// 引入工具文件
const {
    md5,
    secretKey
} = require("../utils/salt");
const jwt = require("jsonwebtoken");
// 注册调用这个方法将新的数据添加到数据库。
const reg = async ({
    username,
    password
} = {}) => await mongoose.model("users").create({
    username,
    password: md5(password)
});

// 注册时查询有无账号重复
const usernameVerify = async ({
    username
} = {}) => await mongoose.model("users").findOne({
    username
})
// 登录时匹配用户名和密码
const loing = async ({
    password,
    username
}) => {
    if (password && username) {
        const {
            _id
        } = await mongoose.model("users").findOne({
            password: md5(password),
            username,
        });
        // 如果登录成功，将返回的数据进行解构拿到_id(只要——id有值那么就表示登录已经成功可以生成token)
        const data = {
            _id
        };
        if (_id) {
            const payload = {
                username
            };
            // 生成token
            data.token = jwt.sign(
                payload,
                secretKey, {
                    expiresIn: 60 * 60 // 秒
                }
            );
        }
        return data
    }

};
// 将方法用nodeJS的方式暴露出去
module.exports = {
    reg,
    usernameVerify,
    loing,
}